//
//  StatusViewModel.swift
//  Weibo10
//
//  Created by 刘俊 on 15/10/20.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit

/// 微博视图模型 - 处理单条微博的业务逻辑
class StatusViewModel: CustomStringConvertible{

    /// 微博的模型
    var status: SYLJStatus
    /// 表格的可重用表示符号
    var cellId: String {
        return status.retweeted_status != nil ? RetweetedStatusCellId : StatusCellNormalId
    }
    /// Cell行高
//    var rowHeight: CGFloat?
    lazy var rowHeight: CGFloat = {
        
        var cell: StatusCell
        //根据是否转发微博,决定Cell的创建
        if self.status.retweeted_status != nil {
            cell = RetweetedStatusCell(style: UITableViewCellStyle.Default, reuseIdentifier: RetweetedStatusCellId)
        }else {
            cell = NormalIdStatusCell(style: UITableViewCellStyle.Default, reuseIdentifier: StatusCellNormalId)
        }
        return cell.rowHeight(self)
        
    }()
    
    //MARK: - c处理每一个cell的逻辑问题
    /// 用户头像 URL
    var userProfileUrl: NSURL {
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    /// 用户默认头像
    var userDefaultIconView: UIImage {
        return UIImage(named: "avatar_default_big")!
    }
    /// 用户会员图标
    var userMemberImage: UIImage? {
        // 根据mbrank 来生成图像,会员等级 0-6
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    /// 用户认证图标
    /// 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userVipImage: UIImage? {
        switch(status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2,3,5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    /// 配图URL数组
    // 一条微博是原创微博的话,那么它可以有图也可以没有图,是转发微博的话一定没有图,它的转发微博可以有图也可以没有图,因此一条微博的图像要么是微博本身的,要么是原创微博的,因此我们使用一个数组来一起处理微博图像
    var thumbnailUrls: [NSURL]?
    /// 转发微博正文数据
    var retweetedStatusText: String? {
        guard let s = status.retweeted_status else {
            return nil
        }
        return "@" + (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
    }
    
    /// 构造函数
    init(status: SYLJStatus) {
        self.status = status
        
        // 创建配图 url 数组
//        let urls = status.retweeted_status?.pic_urls ?? status.pic_urls
//        if urls!.count > 0 {
//            thumbnailUrls = [NSURL]() // 注意不能加?
//            for dict in urls! {
//                let url = NSURL(string: dict["thumbnail_pic"]!)// key值可能出错
//                thumbnailUrls?.append(url!)
//            }
////            print(thumbnailUrls?.count)
//        }
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls {
            thumbnailUrls = [NSURL]()
            for dict in urls {
                let url = NSURL(string: dict["thumbnail_pic"]!)// key值可能出错
                thumbnailUrls?.append(url!)
            }
        }
        
     }
    // 描述信息
    var description: String {
        return status.description + "\n配图数组 \((thumbnailUrls ?? []) as NSArray)"
    }
}